<!DOCTYPE html>
<html>
<head>
    <title>JS对象测试</title>
    <meta charset="utf-8"/>
    <script src="../../../js/jquery-1.10.1.min.js"></script>
    <script src="../../../js/json2.js"></script>
    <script>
        /*
         * 彻底理解原型链 (prototype chain)
         在 ECMAScript 中，每个由构造器创建的对象拥有一个指向构造器 prototype 属性值的 隐式引用（implicit reference），
         这个引用称之为 原型（prototype）。进一步，每个原型可以拥有指向自己原型的 隐式引用（即该原型的原型），
         如此下去，这就是所谓的 原型链（prototype chain） （参考资源）。
         在具体的语言实现中，每个对象都有一个 __proto__ 属性来实现对原型的 隐式引用。
         程序清单 4说明了这一点。
         */
        function Person( name ) {
            this.name = name;
        }
        var p = new Person();
        // 对象的隐式引用指向了构造器的 prototype 属性，所以此处打印 true
        console.log( p.__proto__ === Person.prototype );

        // 原型本身是一个 Object 对象，所以他的隐式引用指向了
        // Object 构造器的 prototype 属性 , 故而打印 true
        console.log( Person.prototype.__proto__ === Object.prototype );

        // 构造器 Person 本身是一个函数对象，所以此处打印 true
        console.log( Person.__proto__ === Function.prototype );
    </script>
</head>
<body>

</body>
</html>